package learn.up.java.designMode.observer.demo;

/**
 *具体的观察者对象，实现更新的方法,是自身状态与目标状态保持一致
 * @author NANUTO
 * @date 2017年11月26日 下午8:32:24
 */
public class ConcreteObserver implements Observer {
	
	/**
	 * 观察者名称，是谁收到了这个订阅信息
	 */
	private String observerName;
	
	/**
	 * 天气状况，从目标处获取
	 */
	private String  weatherContent;
	
	/**
	 * 提醒的信息
	 */
	private String remindMessage;

	public String getWeatherContent() {
		return weatherContent;
	}

	public void setWeatherContent(String weatherContent) {
		this.weatherContent = weatherContent;
	}

	public String getRemindMessage() {
		return remindMessage;
	}

	public void setRemindMessage(String remindMessage) {
		this.remindMessage = remindMessage;
	}

	/**
	 * 获取目标的状态更新到观察者zhuangtai
	 */
	@Override
	public void update(WeatherSubject sub) {
		this.weatherContent = ((ConcreteWeatherSubject) sub).getWeatherContent();
		System.out.println(String.format("[%s]收到了天气预报信息: [%s]，记得:[%s]",
				this.observerName, this.weatherContent, this.remindMessage));
	}

	public String getObserverName() {
		return observerName;
	}

	public void setObserverName(String observerName) {
		this.observerName = observerName;
	}

}
